TOP

Riorganizzazione delle tabelle (Unpivot) in LibreOffice Calc

Descrizione

A volte è necessario convertire una tabella a croce (pivot) in una tabella piatta. Questa procedura si chiama " raddrizzamento dei dati " (unpivot data) . In conseguenza di tale" raddrizzamento " otteniamo una tabella in cui tutti i dati simili sono in una colonna.

Il programma LibreOffice Calc non dispone di una funzionalità standard per convertire le tabelle pivot in " Piatto ", ma puoi scrivere tu stesso la procedura corrispondente. Vediamo come farlo.



Diamo un'occhiata all'immagine qui sotto per comprendere più chiaramente l'essenza del problema. A sinistra abbiamo una tabella sotto forma di matrice (tabella pivot) e a destra - una tabella normale con colonne (tabella piatta):

Quando espandi una tabella, decomprimi la coppia attributo-valore che è l'intersezione delle colonne nella tabella a matrice e le riorienti nelle colonne appiattite nella tabella piatta:

  • Valore (Values) (blu a sinistra) espande in una nuova colonna (blu a destra);
  • Attributi (Attributes) (verde a sinistra) vengono inoltre espansi in una nuova colonna (verde a destra) e duplicati in base alla nuova colonna di valori.
  • Codice StarBASIC per la procedura UnPivotTable

    Apri il menu Tools - Macros - Edit Macros..., seleziona Module1 e copia il seguente testo nel modulo:

    1. Sub UnPivotTable  
    2.   ' moonexcel.com.ua   
    3.   Dim oBook        As Object  
    4.   Dim oActiveSheet As Object  
    5.   Dim oSelRange    As Object  
    6.   Dim oNewSheet    As Object  
    7.     
    8.   Dim i                  As Long  
    9.   Dim iTopLabelRowCount  As Integer  
    10.   Dim iSideLabelColCount As Integer         
    11.     
    12.   oBook        = ThisComponent  
    13.   oActiveSheet = oBook.CurrentController.ActiveSheet  
    14.   oSelRange    = oBook.CurrentSelection  
    15.     
    16.   ' Aggiungi un nuovo foglio   
    17.   oBook.Sheets.insertNewByName("UnPivoted Table",0)  
    18.   oNewSheet = oBook.Sheets(0)  
    19.     
    20.   ' Determina la dimensione delle intestazioni   
    21.   iTopLabelRowCount  = InputBox(" Quante righe nell'intestazione superiore? ")  
    22.   iSideLabelColCount = InputBox(" Quante colonne nell'intestazione laterale? ")  
    23.               
    24.   i = 0  
    25.        
    26.   For r = (iTopLabelRowCount + 1) To oSelRange.Rows.Count  
    27.     For c = (iSideLabelColCount + 1) To oSelRange.Columns.Count              
    28.                          
    29.       For j = 1 To iSideLabelColCount                
    30.         oNewSheet.getCellByPosition(j-1, i).Formula = oSelRange.getCellByPosition(j-1, r-1).Formula                 
    31.       Next j  
    32.                
    33.       For k = 1 To iTopLabelRowCount  
    34.         oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, k-1).Formula  
    35.       Next k             
    36.                            
    37.       oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, r-1).Formula  
    38.       i = i + 1                     
    39.               
    40.     Next c  
    41.   Next r  
    42. End Sub  

    Quindi chiudi Macro Editor e torna al foglio di lavoro in LibreOffice Calc. Seleziona l'intera tabella con le intestazioni in alto e a sinistra ed esegui la nostra nuova macro tramite il menu Tools - Macros - Run Macro...

    La macro inserirà un nuovo foglio con nome nella cartella di lavoro "UnPivoted Table" e quindi aggiungere una tabella nel nuovo formato. Con una tabella di questo tipo puoi eseguire qualsiasi analisi in LibreOffice Calc.

    Utilizzando l'estensione

    Puoi anche usare l'utility "Tabella pivot (Unpivot)" installando l'estensione YLC_Utilities.oxt .

    Successivamente, questa utilità sarà disponibile in tutti i file che verranno aperti in LibreOffice Calc.

    Articoli sull'argomento:

  • Riorganizzazione delle tabelle (Unpivot) in Excel